Skip to main content

Several payments of the same type (split payment)

One receipt may be paid by several payments of the same type — for example half by one card and half by another. Declare each payment as its own extraPayments entry:

"extraPayments": [
{ "code": "V", "amount": 3000 },
{ "code": "V", "amount": 7000 }
]

Rules:

  • A payment type must not be declared in both payments and extraPayments. Sending payments.cashlessAmount together with an extraPayments entry of code V is rejected as ambiguous (business-rule error, no dedicated code — see §12.3). Use extraPayments only.
  • At most 5 card (terminal) payments per receipt.
  • The payments block and extraPayments may be combined for different types, e.g. payments.cashAmount plus two extraPayments cards.
  • With a bank terminal enabled, each card payment is charged as a separate terminal operation, one after another. Allow for that in your request timeout: the total time is the sum of the individual terminal operations.
  • Top-level rrn, auth, cardNum, bankName, binName of the success response describe the first card payment only, kept for backwards compatibility. For a receipt paid by several cards, read totalPayments — every entry carries its own terminal data.

Partially paid receipt

If one card is charged and a later one is declined or fails, the receipt is not fiscalized and the already charged money is not reversed automatically — reversing it without being asked could leave the customer refunded with no record, and the terminal may not even support cancel. The response is an error with the current state of the receipt:

FieldTypeNotes
paidAmountinteger (int64)Amount already charged
dueAmountinteger (int64)Amount still to be paid
totalPaymentsarray of payment entriesEach entry carries settled — whether its money was taken

Two ways forward, both driven by you:

  1. Settle the rest — repeat the same request with the same documentExtID. The already charged payments are kept as they are and only the unsettled ones are sent to the terminal again.
  2. Cancel the receipt — call /abort with the same documentExtID. Every charged terminal payment is reversed and the document is deleted. If any reversal fails, /abort returns an error and the document is left in place for a retry — never treat a failed /abort as a cancelled receipt.